Django এর মডেলস (Models) একটি গুরুত্বপূর্ণ অংশ, যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করে। Django মডেলসকে ব্যবহার করে আপনি ডেটাবেসের টেবিল ডিজাইন, ডেটা সঞ্চালন এবং বিভিন্ন ডেটাবেস অপারেশন খুব সহজে করতে পারেন। Django এর ORM (Object-Relational Mapping) ফিচারের মাধ্যমে আপনি Python কোডের মাধ্যমে ডেটাবেস অপারেশন করতে পারেন, যা SQL কোড লেখার প্রয়োজনীয়তা কমিয়ে দেয়।
Django মডেলস (Models) কী?
Django মডেলস (Models) হল Python ক্লাস যা ডেটাবেসের টেবিলগুলির প্রতিনিধিত্ব করে। এই মডেলসের মাধ্যমে আপনি ডেটাবেস টেবিল, কলাম, সম্পর্ক এবং অন্যান্য ডেটাবেস অপারেশন পরিচালনা করতে পারেন। যখন আপনি একটি Django মডেল তৈরি করেন, তখন Django স্বয়ংক্রিয়ভাবে এর জন্য SQL কোড তৈরি করে এবং ডেটাবেসে টেবিল তৈরি বা আপডেট করে।
Django ORM (Object-Relational Mapping)
Django ORM একটি শক্তিশালী টুল যা Python কোডের মাধ্যমে ডেটাবেস অপারেশন চালানোর সুবিধা দেয়। ORM আপনাকে SQL কোড লিখতে ছাড়াই ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করে। এটি ডেটাবেসের রিলেশনাল ডাটা মডেল এবং Python অবজেক্টের মধ্যে ম্যাপিং তৈরি করে।
Django মডেলস তৈরি করা
১. মডেল ক্লাস তৈরি
মডেল তৈরি করতে, আপনি models.py ফাইলে একটি ক্লাস তৈরি করবেন যা models.Model থেকে ইনহেরিট করবে। এই ক্লাসের প্রতিটি অ্যাট্রিবিউট ডেটাবেস টেবিলের একটি কলামকে প্রতিনিধিত্ব করে।
উদাহরণস্বরূপ, একটি ব্লগ অ্যাপের জন্য পোস্ট মডেল তৈরি করা:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
এখানে:
title: একটিCharFieldযা টেক্সট ফিল্ডের জন্য ব্যবহৃত হয়।content: একটিTextFieldযা বড় ধরনের টেক্সট ধারণ করতে পারে।created_atএবংupdated_at: দুটিDateTimeFieldযা যথাক্রমে রেকর্ড তৈরির এবং আপডেটের সময় সঞ্চয় করে।__str__(): এটি একটি বিশেষ পদ্ধতি যা মডেলটি প্রিন্ট করার সময় কীভাবে প্রদর্শিত হবে তা নির্ধারণ করে।
২. মাইগ্রেশন তৈরি করা
মডেল তৈরি হওয়ার পর, আপনাকে ডেটাবেসে পরিবর্তনগুলো রিফ্লেক্ট করতে হবে। প্রথমে মাইগ্রেশন ফাইল তৈরি করুন:
python manage.py makemigrations
এরপর মাইগ্রেশন চালিয়ে ডেটাবেসে পরিবর্তনগুলো বাস্তবায়ন করুন:
python manage.py migrate
Django ORM ব্যবহার করে ডেটাবেস অপারেশন
১. ডেটা তৈরি করা
Django ORM ব্যবহার করে ডেটাবেসে নতুন রেকর্ড তৈরি করতে, আপনি মডেলের save() মেথড ব্যবহার করবেন।
from blog.models import Post
# নতুন পোস্ট তৈরি
post = Post(title="My First Post", content="This is my first blog post.")
post.save()
এখানে, post.save() মেথডটি নতুন পোস্টকে ডেটাবেসে সেভ করে।
২. ডেটা পড়া (Querying)
Django ORM আপনাকে সহজভাবে ডেটা পড়তে সাহায্য করে। উদাহরণস্বরূপ, সব পোস্ট পড়তে:
posts = Post.objects.all()
এটি Post মডেলের সব রেকর্ড নিয়ে আসবে। এছাড়া নির্দিষ্ট শর্তে ডেটা ফিল্টার করতে পারেন:
posts = Post.objects.filter(title="My First Post")
এই কোডটি এমন সব পোস্ট দেখাবে, যার শিরোনাম "My First Post"।
৩. ডেটা আপডেট করা
আপনি যেকোনো রেকর্ডের মান আপডেট করতে পারেন:
post = Post.objects.get(id=1) # id 1 এর পোস্টকে খুঁজে বের করুন
post.content = "Updated content of the post"
post.save()
এখানে, আমরা Post মডেলের প্রথম পোস্টটি খুঁজে বের করেছি এবং তার কনটেন্ট আপডেট করেছি।
৪. ডেটা মুছে ফেলা
যেকোনো রেকর্ড মুছে ফেলতে, আপনি delete() মেথড ব্যবহার করতে পারেন:
post = Post.objects.get(id=1)
post.delete()
এটি id=1 এর পোস্টটি ডিলিট করবে।
Django মডেল ফিল্ডস
Django মডেলে বিভিন্ন ধরনের ফিল্ড ব্যবহার করা যায়। কিছু সাধারণ ফিল্ডের উদাহরণ:
CharField: ছোট স্ট্রিংয়ের জন্য, যেমন নাম বা শিরোনাম।TextField: বড় টেক্সট ফিল্ড।IntegerField: পূর্ণসংখ্যা (integer) ফিল্ড।DateTimeField: তারিখ এবং সময়ের জন্য।BooleanField: সত্য বা মিথ্যা (True/False) ভ্যালু সংরক্ষণ করতে।ForeignKey: একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করতে।
উদাহরণ:
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
এখানে, Comment মডেলটি Post মডেলের সাথে সম্পর্কিত (ForeignKey)।
Django মডেল এবং ডেটাবেস সম্পর্ক
Django মডেলগুলি ডেটাবেসের টেবিলগুলির সঙ্গে সম্পর্ক স্থাপন করে। আপনি ForeignKey, ManyToManyField এবং OneToOneField ব্যবহার করে সম্পর্ক স্থাপন করতে পারেন। এই ফিল্ডগুলোর সাহায্যে আপনি একাধিক টেবিলের মধ্যে রিলেশন তৈরি করতে পারবেন।
সারাংশ
Django মডেলস এবং ORM হল Django অ্যাপ্লিকেশন ডেভেলপমেন্টের একটি শক্তিশালী এবং প্রয়োজনীয় অংশ। Django ORM আপনাকে Python কোডের মাধ্যমে সহজভাবে ডেটাবেস ম্যানিপুলেশন করতে সাহায্য করে, যা SQL কোডের প্রয়োজনীয়তা কমিয়ে দেয়। মডেলস দিয়ে আপনি ডেটাবেসের টেবিল এবং রিলেশনগুলো সহজে তৈরি এবং পরিচালনা করতে পারেন।
Django মডেল (Model) হল Django এর ORM (Object-Relational Mapping) সিস্টেমের মাধ্যমে ডেটাবেসের টেবিল এবং রেকর্ড ম্যানেজ করার একটি সহজ উপায়। মডেল ব্যবহার করে আপনি ডেটাবেসের টেবিল তৈরি এবং মডেল ক্লাসের মাধ্যমে সেই টেবিলের ডেটা ম্যানিপুলেট করতে পারেন।
এখানে আমরা দেখব কীভাবে Django অ্যাপের মডেল তৈরি করা হয় এবং তা ডেটাবেসে মাইগ্রেট করা হয়।
Django মডেল তৈরি করার ধাপ
১. মডেল ফাইলটি খোলা
প্রথমে আপনার Django অ্যাপের models.py ফাইলটি খুলুন। এখানে আপনি আপনার মডেল ক্লাসগুলি তৈরি করবেন। উদাহরণস্বরূপ, একটি ব্লগ অ্যাপের জন্য আমরা একটি Post মডেল তৈরি করতে পারি, যার মাধ্যমে ব্লগ পোস্টের শিরোনাম, কনটেন্ট, এবং প্রকাশের তারিখ সংরক্ষণ করা হবে।
২. মডেল তৈরি করা
models.py ফাইলে নতুন মডেল তৈরি করতে, আপনাকে Django এর models.Model ক্লাস থেকে একটি ক্লাস তৈরি করতে হবে। উদাহরণস্বরূপ:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200) # ব্লগ পোস্টের শিরোনাম
content = models.TextField() # ব্লগ পোস্টের কনটেন্ট
published_date = models.DateTimeField(auto_now_add=True) # পোস্টের প্রকাশের তারিখ
author = models.CharField(max_length=100) # পোস্টের লেখক
def __str__(self):
return self.title
এখানে:
title: একটিCharField, যা ব্লগ পোস্টের শিরোনাম সংরক্ষণ করে।content: একটিTextField, যা ব্লগ পোস্টের বিস্তারিত কনটেন্ট সংরক্ষণ করে।published_date: একটিDateTimeField, যা পোস্টের প্রকাশের সময় সংরক্ষণ করে।auto_now_add=Trueব্যবহার করলে এটি স্বয়ংক্রিয়ভাবে পোস্টের তৈরি হওয়ার সময় সন্নিবেশিত হয়।author: একটিCharField, যা পোস্টের লেখক (অথবা ব্যবহারকারীর নাম) সংরক্ষণ করে।
__str__ মেথডটি মডেল অবজেক্টের প্রতিনিধিত্বের জন্য ব্যবহৃত হয়। এটি Django Admin এ রেকর্ডের শিরোনাম হিসেবে ব্যবহৃত হবে।
৩. মডেল মাইগ্রেশন তৈরি করা
এখন আপনাকে তৈরি করা মডেলটি ডেটাবেসে সঠিকভাবে মাইগ্রেট করতে হবে। Django মডেলগুলোকে ডেটাবেস টেবিল হিসেবে রূপান্তর করতে মাইগ্রেশন ব্যবহার করা হয়।
প্রথমে, মডেলগুলোতে পরিবর্তন করার পর একটি মাইগ্রেশন ফাইল তৈরি করতে হবে। নিচের কমান্ডটি ব্যবহার করুন:
python manage.py makemigrations
এটি মডেল ফাইলের উপর ভিত্তি করে মাইগ্রেশন ফাইল তৈরি করবে। এই ফাইলটি মডেল এবং ডেটাবেসের মধ্যে সম্পর্ক স্থাপন করবে।
৪. মডেল মাইগ্রেশন ডেটাবেসে প্রয়োগ করা
মাইগ্রেশন ফাইল তৈরি হওয়ার পর, আপনাকে সেই মাইগ্রেশন ডেটাবেসে প্রয়োগ করতে হবে। এটি করার জন্য কমান্ডটি ব্যবহার করুন:
python manage.py migrate
এই কমান্ডটি Django এর মডেলকে ডেটাবেস টেবিল হিসেবে রূপান্তর করবে এবং আপনার Post মডেল অনুযায়ী ডেটাবেসে একটি নতুন টেবিল তৈরি করবে।
৫. Django Admin এ মডেল রেজিস্টার করা
Django Admin এর মাধ্যমে আপনার মডেল পরিচালনা করতে, আপনাকে মডেলটি admin.py ফাইলে রেজিস্টার করতে হবে। এটি করার জন্য admin.py ফাইলটি খুলুন এবং নিচের মতো কোড যোগ করুন:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
এটি Post মডেলটিকে Django Admin প্যানেলে রেজিস্টার করবে, এবং আপনি সহজেই অ্যাডমিন প্যানেল থেকে Post মডেল দেখতে এবং পরিচালনা করতে পারবেন।
৬. Django Admin ব্যবহার করে মডেল দেখানো
এখন আপনি Django Admin প্যানেলে লগইন করে, Post মডেলটির নতুন রেকর্ড তৈরি এবং পরিচালনা করতে পারেন।
প্রথমে Django সার্ভার চালু করুন:
python manage.py runserver- ব্রাউজারে http://127.0.0.1:8000/admin URL এ যান।
- অ্যাডমিন প্যানেলে লগইন করুন (আপনি যদি আগে সুপারইউজার না তৈরি করে থাকেন, তবে
python manage.py createsuperuserকমান্ড দিয়ে একটি সুপারইউজার তৈরি করতে হবে)। - লগইন করার পর, আপনি
Postমডেলটি অ্যাডমিন প্যানেলে দেখতে পাবেন এবং সেখানে নতুন ব্লগ পোস্ট তৈরি করতে পারবেন।
সারাংশ
- Django মডেল হল ডেটাবেসের টেবিলের প্রতিনিধিত্বকারী ক্লাস, যা Django এর ORM এর মাধ্যমে ডেটাবেসের তথ্য পরিচালনা করে।
- মডেল তৈরি করতে,
models.Modelথেকে একটি ক্লাস তৈরি করতে হয় এবং সেখানে বিভিন্ন ফিল্ড যুক্ত করতে হয়। - মডেল তৈরি হওয়ার পর, মাইগ্রেশন ফাইল তৈরি করে তা ডেটাবেসে প্রয়োগ করতে হয়।
- Django Admin প্যানেলে মডেল দেখতে এবং পরিচালনা করতে,
admin.pyফাইলে মডেল রেজিস্টার করতে হয়।
এখন আপনার Django অ্যাপের মডেল তৈরি এবং ডেটাবেসে প্রয়োগ করা সম্পূর্ণ হয়েছে।
Django মডেলে ডেটা সংরক্ষণের জন্য বিভিন্ন ধরনের ফিল্ড টাইপ ব্যবহার করা হয়। প্রতিটি ফিল্ড টাইপ বিভিন্ন ধরনের ডেটা সংরক্ষণ করার জন্য উপযুক্ত এবং তাদের আলাদা বৈশিষ্ট্য থাকে। এখানে আমরা সাধারণ কিছু Django মডেল ফিল্ডের টাইপ এবং তাদের ব্যবহারের বিস্তারিত আলোচনা করব।
Django মডেল ফিল্ড টাইপস
১. CharField (চিহ্ন ক্ষেত্র)
CharField সাধারণত ছোট আকারের টেক্সট সংরক্ষণ করতে ব্যবহৃত হয়, যেমন নাম, শিরোনাম, ইত্যাদি।
- ব্যবহার: সাধারণভাবে, এই ফিল্ডটি একটি স্ট্রিং ধরনের ডেটা ধারণ করে এবং
max_lengthআর্গুমেন্টের মাধ্যমে এর সর্বোচ্চ দৈর্ঘ্য নির্ধারণ করা হয়।
title = models.CharField(max_length=200)
- এখানে,
titleফিল্ডটি ২০০ ক্যারেক্টারের মধ্যে একটি স্ট্রিং ধারণ করবে।
২. IntegerField (পূর্ণসংখ্যা ক্ষেত্র)
IntegerField ফিল্ডটি পূর্ণসংখ্যা (integer) ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। যেমন, কাউন্ট, পরিমাণ ইত্যাদি।
- ব্যবহার: এটি সাধারণত ইনটিজার ডেটা ধারণ করে, যা গাণিতিক হিসাবের জন্য ব্যবহৃত হতে পারে।
age = models.IntegerField()
- এখানে,
ageফিল্ডটি একটি পূর্ণসংখ্যা ধারণ করবে।
৩. FloatField (ফ্লোটিং পয়েন্ট সংখ্যা ক্ষেত্র)
FloatField ফিল্ডটি দশমিক সংখ্যার জন্য ব্যবহৃত হয়, যেমন প্রাইস, রেটিং, ইত্যাদি।
- ব্যবহার: এটি দশমিক সংখ্যা সংরক্ষণ করে এবং ডেটার মধ্যে দশমিক শূন্য থাকতে পারে।
price = models.FloatField()
- এখানে,
priceফিল্ডটি একটি দশমিক সংখ্যা ধারণ করবে।
৪. BooleanField (বুলিয়ান ক্ষেত্র)
BooleanField ফিল্ডটি শুধুমাত্র দুটি মান গ্রহণ করতে পারে: True অথবা False।
- ব্যবহার: এটি সাধারণত কোনো বিকল্পের জন্য, যেমন "প্রকাশিত" বা "অ্যাক্টিভ" ক্ষেত্রের জন্য ব্যবহৃত হয়।
is_active = models.BooleanField(default=True)
- এখানে,
is_activeফিল্ডটিTrueঅথবাFalseমান ধারণ করবে।
৫. DateField (তারিখ ক্ষেত্র)
DateField ফিল্ডটি তারিখ সংরক্ষণ করার জন্য ব্যবহৃত হয়। এটি সাধারণভাবে একটি নির্দিষ্ট দিন (দিন, মাস, বছর) সংরক্ষণ করে।
- ব্যবহার: এটি সাধারনত জন্মতারিখ, রেজিস্ট্রেশন তারিখ ইত্যাদি সংরক্ষণে ব্যবহৃত হয়।
birth_date = models.DateField()
- এখানে,
birth_dateফিল্ডটি একটি নির্দিষ্ট তারিখ (যেমন: 2024-12-05) ধারণ করবে।
৬. DateTimeField (তারিখ ও সময় ক্ষেত্র)
DateTimeField ফিল্ডটি তারিখ এবং সময় সংরক্ষণ করার জন্য ব্যবহৃত হয়। এটি তারিখ এবং সময় উভয় একসাথে সংরক্ষণ করে।
- ব্যবহার: এটি সাধারনত কোনো ইভেন্ট বা অ্যাকশন ঘটানোর তারিখ এবং সময়ের জন্য ব্যবহৃত হয়।
created_at = models.DateTimeField(auto_now_add=True)
- এখানে,
created_atফিল্ডটি বর্তমান তারিখ ও সময় স্বয়ংক্রিয়ভাবে সংরক্ষণ করবে যখন একটি নতুন রেকর্ড তৈরি হবে।
৭. TextField (টেক্সট ক্ষেত্র)
TextField ফিল্ডটি বড় আকারের টেক্সট সংরক্ষণের জন্য ব্যবহৃত হয়, যেমন ব্লগ পোস্টের কনটেন্ট, মন্তব্য, ইত্যাদি।
- ব্যবহার: এটি সাধারণত বড় বা বহু শব্দের ডেটা ধারণ করার জন্য ব্যবহৃত হয়।
content = models.TextField()
- এখানে,
contentফিল্ডটি কোনো সীমাবদ্ধতা ছাড়াই বড় আকারের টেক্সট ধারণ করতে পারে।
৮. EmailField (ইমেইল ক্ষেত্র)
EmailField ফিল্ডটি ইমেইল ঠিকানা সংরক্ষণ করার জন্য ব্যবহৃত হয় এবং এটি ইমেইল ঠিকানার ফরম্যাট যাচাই করে।
- ব্যবহার: এটি ইমেইল ঠিকানা ধারণ করে এবং ডেটা সঠিক ফরম্যাটে থাকতে হবে।
email = models.EmailField()
- এখানে,
emailফিল্ডটি ইমেইল ঠিকানা ধারণ করবে, যেমনuser@example.com।
৯. URLField (ইউআরএল ক্ষেত্র)
URLField ফিল্ডটি একটি ইউআরএল (Uniform Resource Locator) সংরক্ষণ করার জন্য ব্যবহৃত হয়।
- ব্যবহার: এটি সাধারনত ওয়েবসাইট বা পেজের লিঙ্ক সংরক্ষণের জন্য ব্যবহৃত হয়।
website = models.URLField()
- এখানে,
websiteফিল্ডটি একটি ইউআরএল ধারণ করবে, যেমনhttps://www.example.com।
১০. ForeignKey (বিদেশী কী)
ForeignKey ফিল্ডটি দুটি মডেলের মধ্যে একাধিক সম্পর্ক তৈরি করার জন্য ব্যবহৃত হয়। এটি একটি সম্পর্কিত মডেলকে ইঙ্গিত করে এবং একাধিক রেকর্ডের সাথে সম্পর্ক স্থাপন করতে সাহায্য করে।
- ব্যবহার: এটি সাধারণত একাধিক মডেলের মধ্যে রিলেশন (relationship) তৈরির জন্য ব্যবহৃত হয়।
author = models.ForeignKey(Author, on_delete=models.CASCADE)
- এখানে,
authorফিল্ডটি অন্য একটি মডেলAuthorএর রেকর্ডের সাথে সম্পর্কিত থাকবে।
সারাংশ
Django মডেলে বিভিন্ন ধরনের ফিল্ড টাইপ থাকে, যেমন CharField, IntegerField, BooleanField, DateField, ForeignKey, ইত্যাদি। প্রতিটি ফিল্ড টাইপ আলাদা ধরনের ডেটা ধারণ করতে ব্যবহৃত হয়, এবং ডেটার ধরন অনুসারে সঠিক ফিল্ড টাইপ নির্বাচন করা জরুরি। Django আপনাকে এর মাধ্যমে শক্তিশালী এবং নমনীয় ডেটাবেস মডেল তৈরি করতে সাহায্য করে, যা আপনার অ্যাপ্লিকেশনটির কার্যকারিতা এবং কর্মক্ষমতা উন্নত করে।
Django তে Database Migrations ব্যবহার করা হয় ডেটাবেসের স্কিমা পরিবর্তন (যেমন টেবিল তৈরি, মডেল আপডেট বা মুছে ফেলা) ট্র্যাক এবং পরিচালনা করার জন্য। মাইগ্রেশন এর মাধ্যমে আপনি ডেটাবেসের স্ট্রাকচার (টেবিল, ফিল্ড ইত্যাদি) পরিবর্তন করতে পারেন, এবং Django ORM (Object-Relational Mapping) আপনাকে এই পরিবর্তনগুলিকে সহজে ট্র্যাক এবং প্রয়োগ করতে সাহায্য করে।
Database Migrations প্রক্রিয়া
১. Django মডেল তৈরি করা
মাইগ্রেশন শুরু করার আগে, প্রথমে আপনাকে Django মডেল তৈরি করতে হবে। Django মডেলগুলি আপনার ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। একটি সাধারণ মডেল দেখতে এমন হতে পারে:
# models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
এই মডেলটি Post নামক একটি টেবিল তৈরি করবে, যেখানে তিনটি ফিল্ড থাকবে: title, content, এবং created_at।
২. মাইগ্রেশন ফাইল তৈরি করা
মডেল পরিবর্তন করার পর, আপনাকে Django তে মাইগ্রেশন ফাইল তৈরি করতে হবে। এটি আপনার মডেলগুলো এবং ডেটাবেসের মধ্যে একটি সিঙ্ক্রোনাইজেশন তৈরি করবে।
মাইগ্রেশন ফাইল তৈরি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
python manage.py makemigrations
এই কমান্ডটি Django কে বলে দেয় যে আপনার মডেলগুলোর মধ্যে কোনো পরিবর্তন হয়েছে, এবং এটি সেসব পরিবর্তনগুলির জন্য মাইগ্রেশন ফাইল তৈরি করবে।
উদাহরণ:
Migrations for 'myapp':
myapp/migrations/0001_initial.py
- Create model Post
এখানে 0001_initial.py হল মাইগ্রেশন ফাইলের নাম, যা প্রথমবার মডেল তৈরি করার সময় তৈরি হয়েছে।
৩. মাইগ্রেশন প্রয়োগ করা
মাইগ্রেশন ফাইল তৈরি হওয়ার পর, আপনি ডেটাবেসে সেই পরিবর্তনগুলি প্রয়োগ করতে পারেন। মাইগ্রেশন প্রয়োগ করতে এই কমান্ডটি ব্যবহার করুন:
python manage.py migrate
এই কমান্ডটি মাইগ্রেশন ফাইল অনুযায়ী ডেটাবেসে পরিবর্তনগুলো কার্যকর করবে। প্রথমবার যখন আপনি মাইগ্রেশন করবেন, এটি ডেটাবেসে একটি নতুন টেবিল তৈরি করবে (যেমন Post টেবিল)।
মাইগ্রেশন সম্পর্কিত অন্যান্য কমান্ড
১. মাইগ্রেশন স্ট্যাটাস চেক করা
আপনি কোন মাইগ্রেশনগুলো ইতিমধ্যে প্রয়োগ হয়েছে এবং কোনগুলি প্রক্রিয়াধীন রয়েছে তা দেখতে নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:
python manage.py showmigrations
এটি আপনাকে প্রজেক্টের সব অ্যাপ্লিকেশনের মাইগ্রেশন স্ট্যাটাস দেখাবে, যেমন:
myapp
[X] 0001_initial
[ ] 0002_auto_20231201_1530
এখানে [X] নির্দেশ করে যে মাইগ্রেশনটি সফলভাবে প্রয়োগ হয়েছে, এবং [ ] নির্দেশ করে যে এটি এখনও প্রয়োগ হয়নি।
২. নির্দিষ্ট অ্যাপের জন্য মাইগ্রেশন তৈরি করা
আপনি যদি কোনো নির্দিষ্ট অ্যাপের জন্য মাইগ্রেশন তৈরি করতে চান, তবে অ্যাপের নাম উল্লেখ করতে পারেন:
python manage.py makemigrations myapp
এটি শুধুমাত্র myapp অ্যাপের জন্য মাইগ্রেশন ফাইল তৈরি করবে।
৩. মাইগ্রেশন রোলব্যাক করা
যদি আপনি কোনো মাইগ্রেশন ফিরে নিতে চান বা পূর্ববর্তী অবস্থায় ফিরে যেতে চান, তবে migrate কমান্ডের সাহায্যে আপনি নির্দিষ্ট মাইগ্রেশন স্তরে ফিরে যেতে পারেন। উদাহরণস্বরূপ, যদি আপনি 0001 মাইগ্রেশন পর্যন্ত ফিরে যেতে চান:
python manage.py migrate myapp 0001
এটি myapp অ্যাপের 0001 মাইগ্রেশন পর্যন্ত ডেটাবেস রোলব্যাক করবে।
৪. মাইগ্রেশন পুনরায় প্রয়োগ করা (ফোর্স মাইগ্রেশন)
মাইগ্রেশন প্রয়োগ করার সময় যদি কোনো কারণে কিছু ফাইল মিস হয়ে থাকে বা মাইগ্রেশন প্রয়োগে কোনো সমস্যা ঘটে, তবে আপনি --fake বা --fake-initial অপশন দিয়ে মাইগ্রেশন পুনরায় প্রয়োগ করতে পারেন:
python manage.py migrate --fake myapp
এটি মাইগ্রেশন স্ট্যাটাস আপডেট করবে, কিন্তু ডেটাবেসে কোনো পরিবর্তন করবে না।
৫. মাইগ্রেশন ফাইল মুছে ফেলা
যদি কোনো কারণে আপনি মাইগ্রেশন ফাইল মুছে ফেলতে চান (যেমন পরীক্ষা করে বা ডেভেলপমেন্ট পর্যায়ে), তবে ফাইলটি সরিয়ে ফেলে আবার makemigrations কমান্ড চালাতে পারেন।
মাইগ্রেশন এবং ডেটাবেসে পরিবর্তন ট্র্যাক করা
Django তে মাইগ্রেশন ব্যবস্থাপনা এবং ডেটাবেস স্কিমা ট্র্যাকিং খুবই সহজ এবং স্বয়ংক্রিয়। Django ORM মডেলগুলোর পরিবর্তন ট্র্যাক করে এবং মাইগ্রেশন ফাইল তৈরির মাধ্যমে সেগুলো ডেটাবেসে সিঙ্ক্রোনাইজ করে। এর মাধ্যমে, আপনি অ্যাপ্লিকেশনের ডেটাবেস এবং মডেলগুলির মধ্যে সমন্বয় রক্ষা করতে পারেন।
সারাংশ
- Migrations Django তে মডেল এবং ডেটাবেসের মধ্যে সিঙ্ক্রোনাইজেশন তৈরি করে।
makemigrationsকমান্ড মডেল পরিবর্তনের জন্য মাইগ্রেশন ফাইল তৈরি করে।migrateকমান্ড ডেটাবেসে মাইগ্রেশন প্রয়োগ করে।- আপনি মাইগ্রেশন রোলব্যাক বা নির্দিষ্ট মাইগ্রেশন প্রয়োগ করতে পারেন।
Django ORM (Object-Relational Mapping) হল একটি শক্তিশালী টুল, যা Python কোড এবং ডেটাবেসের মধ্যে যোগাযোগ স্থাপন করে। এর মাধ্যমে আপনি ডেটাবেসের টেবিলগুলোর সাথে Python ক্লাসের মাধ্যমে ইন্টারঅ্যাক্ট করতে পারেন, যা SQL কোড লেখার প্রয়োজনীয়তা দূর করে। Django ORM ব্যবহার করে ডেটাবেস পরিচালনা করা সহজ এবং দ্রুত।
Django ORM কী?
Django ORM একটি পদ্ধতি যা আপনাকে ডেটাবেসের টেবিল এবং তার ডেটার সাথে Python কোডের মাধ্যমে কাজ করতে দেয়। ORM ব্যবহার করলে, SQL কোড না লিখেই ডেটাবেসে ইনসার্ট, আপডেট, ডিলিট, এবং সিলেক্ট অপারেশন করা সম্ভব হয়।
ORM আপনাকে ডেটাবেসের রেকর্ডগুলি Python অবজেক্ট হিসেবে দেখানোর সুযোগ দেয় এবং আপনি সেই অবজেক্টগুলোর মাধ্যমে ডেটাবেসে অপারেশন করতে পারেন।
Django ORM এর মাধ্যমে ডেটাবেস পরিচালনার মূল কাজগুলো
১. মডেল তৈরি করা
প্রথমে, Django ORM ব্যবহার করতে হলে আপনাকে একটি মডেল তৈরি করতে হবে। মডেল হচ্ছে ডেটাবেসের টেবিলের জন্য Python ক্লাস, যার প্রতিটি ফিল্ড ডেটাবেস টেবিলের কলামের প্রতিনিধিত্ব করে।
উদাহরণ:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
এখানে Post ক্লাসটি একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করছে, যেখানে title, content, author, এবং created_at ফিল্ডগুলো ডেটাবেসের কলাম হিসেবে কাজ করবে।
২. মডেল থেকে ডেটা রিট্রিভ করা
Django ORM ব্যবহার করে আপনি সহজেই ডেটাবেস থেকে ডেটা নিয়ে আসতে পারেন। ডেটা রিট্রিভ করার জন্য objects ম্যানেজার ব্যবহার করা হয়।
সব রেকর্ড নিয়ে আসা:
posts = Post.objects.all()কিছু নির্দিষ্ট রেকর্ড নিয়ে আসা (ফিল্টার করা):
posts = Post.objects.filter(author='John Doe')একটি রেকর্ড খুঁজে বের করা (ফার্স্ট মেচিং রেকর্ড):
post = Post.objects.get(id=1)প্রথম রেকর্ড খুঁজে বের করা:
first_post = Post.objects.first()
৩. নতুন রেকর্ড ইনসার্ট করা
Django ORM এর মাধ্যমে নতুন রেকর্ড ডেটাবেসে ইনসার্ট করা খুবই সহজ। আপনাকে শুধু মডেল ক্লাসের একটি ইনস্ট্যান্স তৈরি করতে হবে এবং তা সেভ করতে হবে।
post = Post(title='New Post', content='This is the content of the new post', author='Jane Doe')
post.save()
এখানে save() মেথডটি নতুন রেকর্ড ডেটাবেসে ইনসার্ট করবে।
৪. রেকর্ড আপডেট করা
আপনি Django ORM এর মাধ্যমে একটি রেকর্ডের ডেটা আপডেট করতে পারেন। এজন্য প্রথমে রেকর্ডটি খুঁজে বের করতে হবে এবং তারপর তার ফিল্ড আপডেট করতে হবে।
post = Post.objects.get(id=1)
post.title = 'Updated Title'
post.save()
এখানে save() মেথডটি ব্যবহার করে আপডেট করা রেকর্ডটি ডেটাবেসে সেভ করা হয়েছে।
৫. রেকর্ড ডিলিট করা
Django ORM এর মাধ্যমে আপনি রেকর্ড ডিলিটও করতে পারেন। রেকর্ডটি ডিলিট করতে delete() মেথড ব্যবহার করতে হবে।
post = Post.objects.get(id=1)
post.delete()
এটি ডেটাবেস থেকে id=1 রেকর্ডটি মুছে ফেলবে।
৬. ডেটাবেসে কাস্টম কুয়েরি চালানো
Django ORM সাধারণত স্ট্যান্ডার্ড ডেটাবেস অপারেশনগুলোর জন্য যথেষ্ট হলেও, যদি আপনি কিছু কাস্টম SQL কুয়েরি চালাতে চান, তবে Django এর raw() মেথড ব্যবহার করতে পারেন।
posts = Post.objects.raw('SELECT * FROM myblog_post WHERE author = %s', ['John Doe'])
এটি Post টেবিল থেকে author ফিল্ডের মান 'John Doe' যেখানে রয়েছে, সেই রেকর্ডগুলো নিয়ে আসবে।
Django ORM এর সুবিধা
- কোড কমানো: SQL কোড না লিখে, Python কোডের মাধ্যমে ডেটাবেস অপারেশন করা যায়।
- সুরক্ষা: SQL ইনজেকশন আক্রমণ থেকে সুরক্ষা পাওয়া যায় কারণ Django ORM স্বয়ংক্রিয়ভাবে ডেটা স্যানিটাইজ করে।
- অবজেক্ট-অরিয়েন্টেড পদ্ধতি: ORM এর মাধ্যমে ডেটাবেস রেকর্ডগুলো Python অবজেক্ট হিসেবে ব্যবহার করা যায়, যা কোড লেখাকে আরও সহজ এবং পঠনযোগ্য করে।
- মাইগ্রেশন সুবিধা: Django ORM-এর সাথে সংযুক্ত মাইগ্রেশন ফিচার ব্যবহার করে ডেটাবেস স্কিমার পরিবর্তন করা সহজ এবং সিস্টেমের প্রতিটি পরিবর্তন ট্র্যাক করা সম্ভব।
Django ORM এর মাধ্যমে ডেটাবেস পরিচালনায় কিছু সাধারণ কাজ
১. filter() মেথড:
filter() মেথডটি ডেটাবেস থেকে নির্দিষ্ট শর্ত অনুযায়ী রেকর্ডগুলো ফিল্টার করে নিয়ে আসে।
posts = Post.objects.filter(author='Jane Doe')
২. exclude() মেথড:
exclude() মেথডটি filter() এর বিপরীত, যেখানে নির্দিষ্ট শর্তের বাইরে থাকা রেকর্ডগুলো নিয়ে আসে।
posts = Post.objects.exclude(author='John Doe')
৩. order_by() মেথড:
order_by() মেথডটি রেকর্ডগুলোকে একটি নির্দিষ্ট অর্ডারে সাজাতে ব্যবহৃত হয়।
posts = Post.objects.all().order_by('created_at')
৪. values() এবং values_list() মেথড:
এই মেথডগুলো ব্যবহৃত হয় যখন আপনি শুধুমাত্র নির্দিষ্ট ফিল্ডের মানগুলো প্রয়োজন, পুরো অবজেক্ট নয়।
posts = Post.objects.values('title', 'author')
সারাংশ
Django ORM ডেটাবেস পরিচালনায় একটি অত্যন্ত শক্তিশালী টুল। এটি আপনাকে ডেটাবেসের সাথে সহজে কাজ করতে সক্ষম করে, Python কোডের মাধ্যমে ডেটাবেসের টেবিলগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারে। ORM এর মাধ্যমে আপনি ডেটা রিট্রিভ, ইনসার্ট, আপডেট এবং ডিলিট সহ বিভিন্ন ডেটাবেস অপারেশন সহজেই করতে পারবেন। Django ORM ডেটাবেস কাজগুলো সহজ, নিরাপদ এবং কার্যকরভাবে পরিচালিত করতে সহায়ক।
Read more